<?php 

/**
 * Funcao que retorna um array contendo como chave o nome do feriado e como
 * elemento o dia em forma inteira.
 */
function dias_feriados($ano = null) {	
	if ($ano == null) {
		$ano = intval(date('Y'));
	}

	$pascoa     = easter_date($ano);
	$dia_pascoa = date('d', $pascoa);
	$mes_pascoa = date('m', $pascoa);
	$ano_pascoa = date('Y', $pascoa);

	$feriados = array(
			'Confraternização Universal' 	=> mktime(0, 0, 0,  1,  1, $ano),
			'Tiradentes' 									=> mktime(0, 0, 0,  4, 21, $ano),
			'Dia do Trabalhador' 					=> mktime(0, 0, 0,  5,  1, $ano),
			'Nossa Senhora do Carmo'			=> mktime(0, 0, 0,  7, 16, $ano),
			'São João'						 				=> mktime(0, 0, 0,  6, 24, $ano),
			'Dia da Independência' 				=> mktime(0, 0, 0,  9,  7, $ano),
			'N. S. Aparecida'							=> mktime(0, 0, 0, 10, 12, $ano),
			'Todos os santos' 						=> mktime(0, 0, 0, 11,  2, $ano),
			'Proclamação da República' 		=> mktime(0, 0, 0, 11, 15, $ano),
			'Nossa Senhora da Conceição'	=> mktime(0, 0, 0, 12,  8, $ano),
			'Natal' 											=> mktime(0, 0, 0, 12, 25, $ano),

			// Datas que dependem da Páscoa
			'Segunda-feira de Carnaval' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 48,  $ano_pascoa),
			'Terça-feira de Carnaval' 	=> mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 47,  $ano_pascoa),
			'Sexta-feira Santa' 				=> mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 2 ,  $ano_pascoa),
			'Páscoa' 										=> mktime(0, 0, 0, $mes_pascoa, $dia_pascoa     ,  $ano_pascoa),
			'Corpus Christi' 						=> mktime(0, 0, 0, $mes_pascoa, $dia_pascoa + 60,  $ano_pascoa),
	);

	sort($feriados);

	return $feriados;
}

/**
 * verifica se o dia é util
 */
function isDiaUtil($dia) {
	$dia_semana = date('w', $dia);
	
	if ($dia_semana >= 6 || $dia_semana <= 0) {
		return false;
	}
	
	$dias_feriados = array_values(dias_feriados() );
	
	// se o dia esta na lista de feriados, entao nao é dia util,
	// caso contrario retorna verdadeiro.
	return !in_array($dia, $dias_feriados); 
}

/**
 * Recebe uma data no formato de numero inteiro e retorna uma string contendo
 * a data por extenso
 */
function data_por_extenso($data) {
	$meses = array (
			'01' => 'janeiro', 	'02' => 'fevereiro', 	'03' => 'março',
			'04' => 'abril', 		'05' => 'maio', 			'06' => 'junho',
			'07' => 'julho', 		'08' => 'agosto', 		'09' => 'setembro',
			'10' => 'outubro', 	'11' => 'novembro', 	'12' => 'dezembro'
	);
	
	$dias = array (
			0 => 'DOM', 1 => 'SEG', 2 => 'TER',	3 => 'QUA',
			4 => 'QUI',	5 => 'SEX',	6 => 'SAB'
	);

	$mes = date('m', $data);
	return $dias[date('w', $data)].' '.date('d', $data).' de '.$meses[$mes];
}

/** */
function getInicioMes($mes, $ano) {
	return mktime(0, 0, 0,  1, $mes, $ano);
}

/** */
function getFimMes($mes, $ano) {
	$lastday = date('t',strtotime('today'));
	return mktime(0, 0, 0, $mes, $lastday, $ano);
}